package com.bosch.in.rtp1.ept.util;

import com.bosch.in.rtp1.ept.manager.ActiveHoldDiagramManager;
import com.bosch.in.rtp1.ept.manager.AuthenticationManager;
import com.bosch.in.rtp1.ept.manager.ChartManager;
import com.bosch.in.rtp1.ept.manager.DurationColorConManager;
import com.bosch.in.rtp1.ept.manager.FXFactorManager;
import com.bosch.in.rtp1.ept.manager.FinishRecipeManager;
import com.bosch.in.rtp1.ept.manager.FrozenColumnManager;
import com.bosch.in.rtp1.ept.manager.HldDurByMonthManager;
import com.bosch.in.rtp1.ept.manager.HoldCodeFilterManager;
import com.bosch.in.rtp1.ept.manager.LinkListManager;
import com.bosch.in.rtp1.ept.manager.LotStatusManager;
import com.bosch.in.rtp1.ept.manager.RelHldDiagramManager;
import com.bosch.in.rtp1.ept.manager.ReleasedHoldManager;
import com.bosch.in.rtp1.ept.manager.SkpFshRcpManager;
import com.bosch.in.rtp1.ept.manager.impl.ActiveHoldDiagramManagerImpl;
import com.bosch.in.rtp1.ept.manager.impl.AuthenticationManagerImpl;
import com.bosch.in.rtp1.ept.manager.impl.ChartManagerImpl;
import com.bosch.in.rtp1.ept.manager.impl.DurationColorConManagerImpl;
import com.bosch.in.rtp1.ept.manager.impl.FXFactorManagerImpl;
import com.bosch.in.rtp1.ept.manager.impl.FinishRecipeManagerImpl;
import com.bosch.in.rtp1.ept.manager.impl.FrozenColumnManagerImpl;
import com.bosch.in.rtp1.ept.manager.impl.HldDurByMonthManagerImpl;
import com.bosch.in.rtp1.ept.manager.impl.HoldCodeFilterManagerImpl;
import com.bosch.in.rtp1.ept.manager.impl.LinkListManagerImpl;
import com.bosch.in.rtp1.ept.manager.impl.LotStatusManagerImpl;
import com.bosch.in.rtp1.ept.manager.impl.RelHldDiagramManagerImpl;
import com.bosch.in.rtp1.ept.manager.impl.ReleasedHoldManagerImpl;
import com.bosch.in.rtp1.ept.manager.impl.SkpFshRcpConManagerImpl;

/**
 * Loose coupling Action layer with Business Delegate (Manager) layer and play a role like ServiceLocator.
 * @author TPR1HC
 *
 */
public class ManagerFactory {
	/**
	 * Eager initialization
	 */
	private static ManagerFactory factory = new ManagerFactory();
	
	/**
	 * Hidden constructor, prevent explicit initialization
	 */
	private ManagerFactory(){}
	
	/**
	 * Factory method to get the instace of this class
	 * @return
	 */
	public static ManagerFactory getInstance() {
		return factory;
	}
	
	/**
	 * Create new instance of LotStatusManager class 
	 * @return LotStatusManager object
	 */
	public LotStatusManager getLotStatusManager() {
		return new LotStatusManagerImpl();
	}
	
	/**
	 * Create new instance of HoldCodeFilterManager class 
	 * @return HoldCodeFilterManager object
	 */
	public HoldCodeFilterManager getHoldCodeFilterManager() {
		return new HoldCodeFilterManagerImpl();
	}
	
	/**
	 * Create new instance of LotStatusManager class 
	 * @return FXFactorManager object
	 */
	public FXFactorManager getFXFactorManager() {
		return new FXFactorManagerImpl();
	}
	
	/**
	 * Create new instance of FinishRecipeManager class 
	 * @return FinishRecipeManager object
	 */
	public FinishRecipeManager getFinishRecipeManager()  {
		return new FinishRecipeManagerImpl();
	}
	
	/**
	 * Create new instance of ReleasedHoldManager class 
	 * @return ReleasedHoldManager object
	 */
	public ReleasedHoldManager getReleasedHoldManager() {
		return new ReleasedHoldManagerImpl();
	}
	
	/**
	 * Create new instance of ChartManager class 
	 * @return ChartManager object
	 */
	public ChartManager getChartManager(){
		return new ChartManagerImpl() ;
	}
	
	/**
	 * Create new instance of SkpFshRcpConManager class 
	 * @return SkpFshRcpManager object
	 */
	public SkpFshRcpManager getSkpFshRcpConManager(){
		return new SkpFshRcpConManagerImpl() ;
	}
	
	/**
	 * Create new instance of RelHldDiagramManager class 
	 * @return RelHldDiagramManager object
	 */
	public RelHldDiagramManager getRelHldDiagramManager() {
		return new RelHldDiagramManagerImpl() ;
	}
	
	/**
	 * Create new instance of ActiveHoldDiagramManager class 
	 * @return ActiveHoldDiagramManager object
	 */
	public ActiveHoldDiagramManager getActHldDiagramManager() {
		return new ActiveHoldDiagramManagerImpl() ;
	}
	
	/**
	 * Create new instance of HldDurByMonthManager class 
	 * @return HldDurByMonthManager object
	 */
	public HldDurByMonthManager getHldDurByMonthManager() {
		return new HldDurByMonthManagerImpl();
	}

	/**
	 * Create new instance of FrozenColumnManager class 
	 * @return FrozenColumnManager object
	 */
	public FrozenColumnManager getFrozenColumnManager() {
		return new FrozenColumnManagerImpl() ;
	}
	/**
	 * Create new instance of DurationColorConManager class 
	 * @return DurationColorConManager object
	 */
	public DurationColorConManager getDurationColorConManager() {
		return new DurationColorConManagerImpl() ;
	}
	
	/**
	 * Create new instance of AuthenticationManager class 
	 * @return AuthenticationManager object
	 */
	public AuthenticationManager getAuthenticationManager() {
		return new AuthenticationManagerImpl() ;
	}
	
	/**
	 * Create new instance of LinkListManager class 
	 * @return LinkListManager object
	 */
	public LinkListManager getLinkListManager() {
		return new LinkListManagerImpl() ;
	}
}
